执行数据节点的磁盘热插拔
v1.0 updated:2017-04-01 Nameless13
在不关闭DataNode的情况下替换HDFS磁盘,这被称为热插拔
警告:要求和限制
使用Cloudera Manager执行数据节点的磁盘热插拔
角色最低要求: Cluster Administrator
配置数据目录以删除要交换的磁盘:
- 选择导航栏上Cluster转到HDFS服务。
- 单击Instances选项卡。
- 单击受影响的DataNode。
- 单击Configuration选项卡。
- 选择左侧筛选器中的Scope > DataNode。
- 选择左侧筛选器中的Category > Main。
- 更改DataNode Data Directory属性的值,以删除要删除的磁盘的挂载点的目录。有哪些角色的都要删掉(hdfs,impala,yarn)
警告:仅对要计划热插拔磁盘的特定DataNode实例更改此属性的值。不要编辑此属性的角色组值。否则会导致数据丢失和角色变更。
单击Save Changes以提交更改。
- 刷新受影响的DataNode。选择Actions > 刷新数据目录。
- 删除旧磁盘并添加替换磁盘。
- 更改DataNode Data Directory属性的值以添加作为您添加的磁盘的挂接点的目录。
- 单击Save Changes以提交更改。
- 刷新受影响的DataNode。选择 Actions > Refresh Data Directories。
- 运行HDFS fsck 验证health of HDFS。
如果使用Cloudera Manager,就不要使用命令行来操作磁盘热插拔
##换盘步骤
根目录数据爆满
原因:因为不正确的换盘操作导致,cdh将数据写入系统盘
- 通过Cm停止该节点所有角色
- 然后umount掉所有盘 停止角色到能umount之间有时长 需要等待
- 然后计算每个目录大小
du -hs /mnt/*
- 将数据备份
- 删除有数据的那个目录
接着mount所有盘
mount /dev/sdb1 /mnt/sdb1/mount /dev/sdc1 /mnt/sdc1/mount /dev/sdd1 /mnt/sdd1/mount /dev/sde1 /mnt/sde1/mount /dev/sdf1 /mnt/sdf1/mount /dev/sdg1 /mnt/sdg1/mount /dev/sdh1 /mnt/sdh1/mount /dev/sdi1 /mnt/sdi1/mount /dev/sdj1 /mnt/sdj1/mount /dev/sdk1 /mnt/sdk1/mount /dev/sdl1 /mnt/sdl1/mount /dev/sdm1 /mnt/sdm1/然后重启agent
机房换盘步骤
- 机房打电话提醒换盘后,因为要重启机器,所以要求他们一台台操作
- 通过CM停止该节点所有角色,后通知机房
- 机房更换好后,因对新硬盘做分区和格式化
- 之后mount对应磁盘
- 重启cloudera-scm-agent
- CM上恢复对应角色
- 恢复后可能有一段时间连不上namenode节点,过一段时间后告警就会自动消失
Linux umount的device is busy问题
原因:其他进程可能在使用/mnt/vdb目录。
解决办法:
关闭使用该目录的进程,然后再umount。